#define _CRT_SECURE_NO_WARNINGS

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <assert.h>

using namespace std;

//class Stack
//{
//public:
//	Stack(int capacity = 3)
//	{
//		_capacity = capacity;
//		_stack = (int*)malloc(sizeof(int) * _capacity);
//		if (nullptr == _stack)
//		{
//			perror("malloc");
//			exit(-1);
//		}
//
//		_top = 0;
//	}
//
//	void Push(int val)
//	{
//		if (_top == _capacity)
//		{
//			_capacity *= 2;
//			int* temp = (int*)realloc(_stack, sizeof(int) * _capacity);
//			if (nullptr == temp)
//			{
//				perror("realloc");
//				exit(-1);
//			}
//
//			_stack = temp;
//		}
//
//		_stack[_top++] = val;
//	}
//
//	bool Empty()
//	{
//		return _top == 0;
//	}
//
//	void Pop()
//	{
//		assert(!Empty());
//
//		_top--;
//	}
//
//	~Stack()
//	{
//		free(_stack);
//		_top = _capacity = 0;
//	}
//
//private:
//	int* _stack;
//	int _capacity;
//	int _top;
//};
//
//class Date
//{
//public:
	//void Init(int year, int month, int day)
	//{
	//	_year = year;
	//	_month = month;
	//	_day = day;
	//}

	//Date(int year, int month, int day)
	//{
	//	_year = year;
	//	_month = month;
	//	_day = day;
	//}

	//Date()
	//{
	//	_year = 10;
	//	_month = 10;
	//	_day = 10;
	//}
//
//	void Print()
//	{
//		cout << _year << ':' << _month << ':' << _day << endl;
//	}
//
//private:
//	int _year;
//	int _month;
//	int _day;
//};
//
//class MyQueue
//{
//public:
//
//
//private:
//	Stack _st1;
//	Stack _st2;
//	int _size = 2;
//};

//int main()
//{
//	//cout << typeid(NULL).name() << endl;
//	//cout << typeid(nullptr).name() << endl;
//
//	Stack st(4);
//
//	for (int i = 0; i < 9; i++)
//		st.Push(i);
//
//	cout << st._capacity << endl;
//
//	return 0;
//}

//int main()
//{
//	Date date;
//	//date.Init(2023, 10, 21);
//	date.Print();
//
//	return 0;
//}

//int main()
//{
//	MyQueue mq;
//
//	return 0;
//}'

//namespace lwj
//{
//	struct Stack
//	{
//		Stack()
//		{
//			_a = nullptr;
//			_top = 0;
//		}
//
//		int* _a;
//		int _top;
//	};
//}

//void Func(auto num1){}

//void Print(int* nums)
//{
//	for (int i : nums)
//		cout << i << ' ';
//}
//
//int main()
//{
//	//lwj :: Stack st;
//	//auto st_bak = st;
//
//	//int a = 1;
//	//auto a_bak = a;
//
//	//auto b = 1.0;
//
//	////auto num;
//
//
//	//cout << typeid(st).name() << endl;
//	//cout << typeid(st_bak).name() << endl;
//	//cout << typeid(a).name() << endl;
//	//cout << typeid(a_bak).name() << endl;
//	//cout << typeid(b).name() << endl;
//
//	//auto ptr = &a;
//	//auto* ptr_bak = &a;
//	//auto& num = a;
//	//cout << typeid(ptr).name() << endl;
//	//cout << typeid(ptr_bak).name() << endl;
//	//cout << typeid(num).name() << endl;
//
//	int Num[] = { 1, 2, 3, 4, 5, 6, 7, 8 };
//
//	//for (auto& i : Num)
//	//{
//	//	i *= 2;
//	//}
//
//	//for (auto& i : Num)
//	//{
//	//	cout << i << ';';
//	//}
//
//	Print(Num);
//
//	//auto num1 = 1, num2 = 2.0;
//
//	return 0;
//}


void Func(int* ptr)
{
	cout << "int*" << endl;
}

void Func(int num)
{
	cout << "int" << endl;
}

int main()
{
	//Func(NULL);
	//Func((int*)NULL);

	cout << typeid(NULL).name() << endl;

	return 0;
}